'use strict';


// let a=typeof {"x":1};
// console.log(a);

// let b=typeof 1;
// console.log(b);

// let c=typeof [{x:1}] ;
// console.log(c);

// let d=typeof NaN ;
// console.log(d);

// let e= null instanceof Object;
// console.log(e);

// let f= null === undefined;
// console.log(f);

// let g= null == undefined;
// console.log(g);

// let h= NaN == NaN;
// console.log(h);


//  console.log(Symbol.for('a') === Symbol.for('a'));

//  console.log(Symbol('a') === Symbol('a'));

//  console.log(NaN === NaN);

// console.log({} === {});

// var a = 1;
// var b = [];
// var c = '';
// var d = true;

 
// console.log((a || b) === true);
// console.log((b && c) === true);
// console.log((c && d) === true);
// console.log((d || a) === true);


// console.log(1==true);

//  console.log([] === []);
//  console.log(undefined == 0);
//  console.log(undefined == false);
//  console.log(false == '');


//  console.log("12" === 12);
//  console.log (NaN === NaN);
//  console.log (typeof(null) === typeof(window));
//  console.log ([1,2,3] === [1,2,3]);


 
//  console.log(Number('a') == Number('a'));
//  console.log(-1 == true);
//  console.log(3 + '2' === 5);
//  console.log(![] == '');



// console.log(Math.round(7.25));
// console.log(Math.ceil(7.25));
// console.log(round(7.25));
// console.log(Math.rnd(7.25) );
 

// console.log(Math.floor(Math.random()*6));
// console.log(Math.floor(Math.random()*10));
// console.log(Math.floor(Math.random()*11));
// console.log(Math.ceil(Math.random()*10));
 
 
// let [a,b, c,d, e] = "hello"; 
// console.log(a);
// console.log(b);
// console.log(c);
// console.log(d);
// console.log(e);
 
// const a = 0xa1;
// console.log(a);

// const b = 076;
// console.log(b);

// const c = 0b21;
// console.log(c);

// const d = 7e2;
// console.log(d);
 
// console.log( typeof 'string');
// console.log(String('string').toString()); 
// console.log('string'.split('').sort().join('')); 
// console.log( (function(string){return string})('string'));
// console.log( JSON.parse('{"string":"string"}').string);
 

// console.log( null == undefined);
// console.log(null === undefined); 
// console.log(null === null); 
// console.log(NaN == null); 
// console.log(NaN === NaN); 
// console.log(Infinity + 1 !== Infinity); 


// var arr = []; 
// console.log(typeof arr);

// var x = typeof x
// var res = typeof typeof x;
// console.log(x, res)

// console.log([typeof null, null instanceof Object]);


// var arr = [];
// console.log(typeof arr, Object.prototype.toString.call(arr));
// console.log(Object.prototype.toString.call(undefined))


// console.log("2"+3+4);

// console.log('5' + 3, 5 + '3');

// var a=parseInt('111办公室');alert(a);
// console.log(["0x1", "0x2", "0x3"].map(parseInt) );

// let a=1 + - + + + - + 1;
// console.log(a);

// let a=[ 'a', ,'b', ,].length ;
// console.log(a);

// case 1
// function showCase(value) {
//     switch(value) {
//     case 'A':
//         console.log('Case A');
//         break;
//     case 'B':
//         console.log('Case B');
//         break;
//     case undefined:
//         console.log('Case undefined');
//         break;
//     default:
//         console.log('Case default');
//     }
// }
// showCase(new String('A'));

// case 2
// function showCase(value) {
//     switch(value) {
//     case 'A':
//         console.log('Case A');
//         break;
//     case 'B':
//         console.log('Case B');
//         break;
//     case undefined:
//         console.log('Case undefined');
//         break;
//     default:
//         console.log('Case default');
//     }
// }
// showCase(String('A'));


// function funcA(x){
//     var temp = 4;

//     function funcB(y){
//         document.write( ++x + y + (temp--));
//     }

//     funcB(5);
// }

// funcA(6)

// var varArr = function(i,j,str) {  
//     return j == 0 ? str : varArr(i,--j,(str+= " " + i[j]));
// }
// var arr = new Array('apple','orange','peach','lime');
// var str = varArr(arr,arr.length,"");
// alert(str); 


// function greetingMaker(greeting) { 
//     function addName(name) {    
//         greeting  = greeting.split(' ').reverse().join("-");
//         return greeting + " " + name;
//     }
    
//     return addName;
// }

// var daytimeGreeting = greetingMaker("Good Day to you");
// alert(daytimeGreeting(name)); 

// String.prototype.GetNum = function() { 
//     var regEx = /[^\d]/g; 
//     return this.replace(regEx, ''); 
// };

// var str = "a1b2c3";
// str = str.GetNum();
// alert(str);

// function sum(a, b) {
//     return a + b;
//   }
//   sum(1, "2");
  
// let number = 0;
// console.log(number++);
// console.log(++number);
// console.log(number);

// function nums(a, b) {
//     if (a > b)
//         console.log('a is bigger')
//     else 
//         console.log('b is bigger')
//     return a + b
// }
// console.log(nums(4, 2))
// console.log(nums(1, 2))

// function side(arr) {
//     arr[0] = arr[2];
// }
// function func1(a, b, c = 3) {
//     c = 10;
//     side(arguments);
//     console.log(a + b + c);
// }
// function func2(a, b, c) {
//     c = 10;
//     side(arguments);
//     console.log(a + b + c);
// }
// func1(1, 1, 1);
// func2(1, 1, 1);

// var a = 3;
// var b = new Number(3);
// var c = 3;

// console.log(a == b);
// console.log(a === b);
// console.log(b === c);

// var a = [];
// a.push(1, 2);
// a.shift(3, 4);
// a.concat([5, 6]);
// a.splice(0, 1, 2);
// console.log(a.length);

// var a = {}, b = '123', c = 123;
// a[b] = 'b';
// a[c] = 'c';
// console.log(a[b]);


// var a = {}, b = Symbol('123'), c = Symbol('123');
// a[b] = 'b';
// a[c] = 'c';
// console.log(a[b]);

// var a = {}, b = {key:'123'}, c = {key:'456'};
// a[b] = 'b';
// a[c] = 'c';
// console.log(a[b]);

// var array = []
// for(var i = 0; i < 3; i++) {
//     array.push(() => i)
// }
// var newArray = array.map(el => el());
// console.log(newArray);

// function a(m, n) {
//     var b = function (l) {
//         return l <= m ? l * b(l + 1) : 1;
//     }

//     return b(m - n + 1);
// }

// console.log(a(4, 2));

// console.log(typeof undefined == typeof NULL);
// console.log(typeof function () {} == typeof class {});

// var a = 10
// var b = {
//     age: 11
// }
// function fn(x,y) {
//     --y.age;
//     return --x;
// }
// fn(a,b)
// console.log(fn(a));


// function getAge(...args) {
//     console.log(typeof args);
//   }
  
//   getAge(21);

// var s='12ab3cd', arr=s.split(/\d/);
// console.log(arr[3],arr[4])

// var arr=[1,2,3];
// arr.push(arr.shift())
// console.log(arr[1],arr[2])

// const first = () => { console.log('first'); return false; }
// const second = () => { console.log('second'); return true; }
// console.log( first() && second() );
// console.log( second() || first() );

// function addToList(item, list) {
//     return list.push(item)
// }
// const result = addToList("nowcoder", ["hello"])
// console.log(result)

// var array = []
// for(var i = 0; i < 3; i++) {
//     array.push(() => i)
// }
// var newArray = array.map(el => el())
// console.log(newArray)

var number = 4;
var numberFactorial = (function (number){
    return (number === 0)? 1: number* factorial(number-1)
})(number)
console.log(numberFactorial)